// var context = {
//     next: 0,
//     prev: 0,
//     done: false,
//     // 新增代码
//     stop: function stop() {
//         this.done = true
//     }
// }
// function gen$(context) {
//     while (1) {
//         switch (context.prev = context.next) {
//             case 0:
//                 context.next = 2;
//                 return 'result1';

//             case 2:
//                 context.next = 4;
//                 return 'result2';

//             case 4:
//                 context.next = 6;
//                 return 'result3';

//             case 6:
//                 // 新增代码
//                 context.stop();
//                 return undefined
//         }
//     }
// }
// let foo = function () {
//     return {
//         next: function () {
//             value = gen$(context);
//             done = context.done
//             return {
//                 value,
//                 done
//             }          
//         } 
//     }
// }
function foo(num) {
    return new Promise((resolve) => {
        setTimeout(() => {
            resolve(num * 2)
        }, 1000)
    })
}
async function asyncFn2() {
    const num1 = await foo(1)
    const num2 = await foo(num1)
    const num3 = await foo(num2)
    return num3
}
console.log(asyncFn2);
console.log(asyncFn2());
asyncFn2().then(res => console.log(res))